                                WebSphere MQ 5.3 with CSD08+
                                ============================

1. WebSphere MQ 5.3 + CSD08 () ԺSupportPac MA0C ʵֵ Publish/Subscribe ܼɽ WebSphere MQ ƷУָûб仯Ȼο MA0C ĵ

        WMQ  WMB е Pub/Sub ͬWMQ õ MQRFH ͷָڣ
                MQPSCommand Publish MQPSTopic myTopic ...

        WMB õ MQRFH2 ͷָ
                <psc><Command>Publish</Command><Topic>myTopic</Topic></psc>


2. WMQ е Pub/Sub  RegSub ʱҪָ MQPSStreamName  MQPSQNameֱʾϢԴĿģȱʡ MQPSStreamName Ϊ SYSTEM.BROKER.DEFAULT.STREAM MQPSQName ȱʡWMB  RegSub ʱҪϢԴϢͨ· Publication Node ֻ迼ϢַĿļɡ
        MQPSCommand RegSub MQPSTopic myTopic MQPSQName QPub                                     // WMQ е MQRFH ָ
        <psc><Command>RegSub</Command><Topic>myTopic</Topic><QName>QPub</QName></psc>           // WMB е MQRFH2 ָ










                                WMQ 5.3 with CSD08+ Pub/Sub Lab
                                ===============================

1. strmqbrk -m <QMgr>ע⵽йһЩ SYSEM.BROKER.* С

2. עᶩ
         rfhruil У
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 1V1 Contents Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Sub <Topic>  myTopicQueue Name Զ SYSTEM.BROKER.CONTROL.QUEUE
                         Subscription Queue Ϊ <QSub>
                         Subscription Point Ϊ <QPub>       // ѡ STREAMȱʡΪ SYSTEM.BROKER.DEFAULT.STREAM
                 Process Request 
         amqspsd -m QM ȷעᶩĳɹ
        ע⣺עᶩĵͬʱ WMQ Pub/Sub Զ <QPub> ΪֹϢ (һ Bug)ԸĻ

3. Ϣ
        rfhruil У
                Main     <QMgr>
                MQMD     ReplyToQͨ ReplyToQ  <MQPSQName>  QReply
                RFH     ѡ RFH Type Ϊ Version 1V1 Contents Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Publish <Topic>
                         2 Queue Name Ϊ <QPub>  SYSTEM.BROKER.DEFAULT.STREAM
                 Process Request 
        鷢ϢǷ <QSub>
        ע⣺һηϢʱWMQ Pub/Sub Զͬʱעᷢߡ

4. ȡ
         rfhruil У( 2 ֻͬǲѡ Subѡ Unsub)
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 1V1 Contents Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Unsub <Topic>Queue Name Զ SYSTEM.BROKER.CONTROL.QUEUE
                         Subscription Queue <QSub>
                 Process Request 
         amqspsd -m QM ȷȡĳɹ

5. ȡ
         rfhruil У( 2 ֻͬǲѡ Subѡ Unsub Pub)
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 1V1 Contents Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Unsub Pub TopicQueue Name Զ SYSTEM.BROKER.CONTROL.QUEUE
                         2 Subscription Point Ϊ <QPub>  SYSTEM.BROKER.DEFAULT.STREAM
                         Process Request 
         amqspsd -m QM ȷȡɹ










                                WMB Queue Pub/Sub Lab
                                =====================

1. ׼
        йConfigMgr, Broker
         WMB Toolkitɹ Broker
         Broker Admin Perspective УԤڣʾѯȷû <Topic>

2. עᶩ
         rfhruil У
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 2V2 Folders Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Sub <Topic>Queue Name Զ SYSTEM.BROKER.CONTROL.QUEUE
                         Subscription Queue Ϊ <QOut>
                 Process Request 
        Ԥٴβѯȷעɹ

3. Ϣ
        rfhruil У
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 2V2 Folders Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Publish Topic
                         Queue Name Ϊ <QIn>
                 Process Request 
        鷢ϢǷ <QOut>

4. ȡ
         rfhruil У( 2 ֻͬǲѡ Subѡ Unsub)
                Main     <QMgr>
                RFH     ѡ RFH Type Ϊ Version 2V2 Folders Ϊ PubSub
                PubSub  ѡ Request Type Ϊ Unsub <Topic>Queue Name Զ SYSTEM.BROKER.CONTROL.QUEUE
                         Subscription Queue Ϊ <QOut>
                 Process Request 
        Ԥٴβѯȷȡĳɹ










                                WMB Direct IP Pub/Sub Lab
                                =========================

1. ׼
        йConfigMgr, Broker
         WMB Toolkitɹ Broker
         Direct IP Ķ뷢ע᲻ͨ Broker Admin Perspective еԤڲѯõﲻͨѯȷϡ

2. һʾ
        java Subscriber localhost 1506 myTopic

3. һʾڣϢ
        java Publisher localhost 1506 myTopic

4. ۲һڣԵõЩϢ

5. ע⣺WMB Queue Pub/Sub Ҳ WMB Direct IP Pub/Sub һ˫ʹͬ TopicϢ Publication Node еĶ϶һݣϢ Queue  Direct IPҲ۶Ŀ Queue  Direct IP
        ⣬WMB Direct IP Pub/Sub Lab ֧










                                WMB Direct IP Pub/Sub Performance Lab
                                =====================================

1. JMS 
        MQJMSOne...
        // һ Publisher Subscriberһ Topic
                MQJMSOnePubMQ.java
                MQJMSOneSubMQ.java
                MQJMSOnePubIp.java
                MQJMSOneSubIp.java
        MQJMS...
        //  Publisher Subscriber TopicϣPublisher  Subscriber ӦһһӦġ
                MQJMSPubMQ.java
                MQJMSSubMQ.java
                MQJMSPubIp.java
                MQJMSSubIp.java

2. в
                                PubMQ     OnePubMQ  SubMQ     OneSubMQ  PubIp     OnePubIp  SubIp     OneSubIp
        -y yield                Y         Y         Y         Y         Y         Y         Y         Y
        -c msgCount             Y         Y         Y         Y         Y         Y         Y         Y
        -n numThreads           Y                   Y         Y         Y                   Y         Y
        -l msgLength            Y         Y                             Y         Y
        -b batchSize            Y         Y         Y         Y
        -m QMName               Y         Y         Y         Y
        -q QName                Y         Y
        -d delayMilliseconds    Y         Y                             Y         Y
        -e isPersistent         Y         Y
        -i reportInterval                           Y         Y                             Y         Y
        -t topicName                      Y                   Y                   Y                   Y
        -h hostName                                                     Y         Y         Y         Y
        -p portNumber                                                   Y         Y         Y         Y
        -m multicast                                                                        Y         Y

3. ԲԣҲԽϲ
        java MQJMSOneSubIp -t myTopic -h localhost -p 1506 -c 1000 -n 3
        java MQJMSOnePubIp -t myTopic -h localhost -p 1506 -c 1000

        java MQJMSOneSubMQ -t myTopic -m WBRKQM -c 1000 -n 3
        java MQJMSOnePubMQ -t myTopic -m WBRKQM -q QIn -c 1000

        java MQJMSSubIp -h localhost -p 1506 -c 1000 -n 3
        java MQJMSPubIp -h localhost -p 1506 -c 1000 -n 3

        java MQJMSSubMQ -m WBRKQM -c 1000 -n 3
        java MQJMSPubMQ -m WBRKQM -q QIn -c 1000 -n 3

        ֮ҲԽϲԣҪע topic ƥ䣬 MQJMSOnexxx  MQJMSxxx ޷Եġ










                                WMB Cloned Broker Lab
                                =====================

1.  Broker (BK1, BK2, BK3) ֱ𴴽ӦĶй (QM1, QM2, QM3) ݿ (DB1, DB2, DB3)
   QM1, QM2, QM3 ֮ (Уͨ)
    PubMQ Ϣ BK1, BK2, BK3 ִ EG1, EG2, EG3 

                                       sub
                                +---------------+
                                |    BK1/QM1    |
                                +---------------+
                                    ^       ^
                                    |       |
                       sub        clone   clone
                +---------------+   |       |   +---------------+
                |    BK2/QM2    |<--+       +-->|    BK3/QM3    |
                +---------------+               +---------------+

2.  Toolkit  Subscription г
    $SYS/Broker/+/Status                        BK1     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756231
    $SYS/Broker/+/Status/ExecutionGroup/#       BK1     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756233
    $SYS/Broker/+/Subscription/#                BK1     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756234
    $SYS/Broker/+/warning/expiry/Subscription/# BK1     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756236
    $SYS/Broker/BK1/PubSubConfig/#              BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T
    $SYS/Broker/BK1/Neighbour                   BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T
    $SYS/Broker/BK1/Subscription/#              BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T
    $SYS/Broker/BK1/Topic/#                     BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T
    $ISYS/Broker/BK1/publisherUpdate            BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T
    $ISYS/Broker/BK1/MQPubSub/Update            BK1     mqrfh2:QM1:SYSTEM.BROKER.IPC.QUEUE.3112:2006052207010658:T

    $SYS/Broker/+/Status                        BK2     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756231
    $SYS/Broker/+/Status/ExecutionGroup/#       BK2     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756233
    $SYS/Broker/+/Subscription/#                BK2     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756234
    $SYS/Broker/+/warning/expiry/Subscription/# BK2     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756236
    $SYS/Broker/BK2/PubSubConfig/#              BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T
    $SYS/Broker/BK2/Neighbour                   BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T
    $SYS/Broker/BK2/Subscription/#              BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T
    $SYS/Broker/BK2/Topic/#                     BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T
    $ISYS/Broker/BK2/publisherUpdate            BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T
    $ISYS/Broker/BK2/MQPubSub/Update            BK2     mqrfh2:QM2:SYSTEM.BROKER.IPC.QUEUE.1072:2006052207010658:T

    $SYS/Broker/+/Status                        BK3     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756231
    $SYS/Broker/+/Status/ExecutionGroup/#       BK3     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756233
    $SYS/Broker/+/Subscription/#                BK3     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756234
    $SYS/Broker/+/warning/expiry/Subscription/# BK3     mqrfh2:WBRKQM:SYSTEM.BROKER.ADMIN.REPLY:4366674d677253756236
    $SYS/Broker/BK3/PubSubConfig/#              BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T
    $SYS/Broker/BK3/Neighbour                   BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T
    $SYS/Broker/BK3/Subscription/#              BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T
    $SYS/Broker/BK3/Topic/#                     BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T
    $ISYS/Broker/BK3/publisherUpdate            BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T
    $ISYS/Broker/BK3/MQPubSub/Update            BK3     mqrfh2:QM3:SYSTEM.BROKER.IPC.QUEUE.5700:2006052207010658:T

3.  BK1 Ķı¡ BK2  BK3 ϣ BK2  BK3 ԵĶı¡ BK1 
    mqsichangeproperties BK1 -e EG1 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"BK2,QM2,BK3,QM3\"
    mqsichangeproperties BK2 -e EG2 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"BK1,QM1\"
    mqsichangeproperties BK3 -e EG3 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"BK1,QM1\"

4.  Toolkit  Subscription 
    $SYS/Broker/BK1/ClonedSubscriptionState/#   BK1     mqrfh2:QM2:SYSTEM.BROKER.CONTROL.QUEUE
    $SYS/Broker/BK1/ClonedSubscriptionState/#   BK1     mqrfh2:QM3:SYSTEM.BROKER.CONTROL.QUEUE
    $SYS/Broker/BK2/ClonedSubscriptionState/#   BK2     mqrfh2:QM1:SYSTEM.BROKER.CONTROL.QUEUE
    $SYS/Broker/BK3/ClonedSubscriptionState/#   BK3     mqrfh2:QM1:SYSTEM.BROKER.CONTROL.QUEUE

5.  QM1  QM2 Ϸֱ myTopic Ϣ QOut
        rfhruil
                RFH     "RFH Type" = "Version 2""V2 Folders" = "PubSub"
                PubSub  "Request Type" = "Sub""Topic" = "myTopic""Queue Manager to Connect to" = <QMgr>
                        "Subscription Queue" = "QOut"
                         Process Request 

6.  Toolkit  Subscription 
    myTopic                                     BK1     mqrfh2:QM1:QOut
    myTopic                                     BK2     mqrfh2:QM2:QOut

7.  QM1, QM2, QM3 Ϸֱ𷢲 myTopic Ϣ
        rfhruil
                RFH     "RFH Type" = "Version 2""V2 Folders" = "PubSub"
                PubSub  "Request Type" = "Publish""Topic" = "myTopic""Queue Manager to Connect to" = <QMgr>
                        "Queue Name" = "QIn"
                         Process Request 

8. ۲㲥Ч
        QM1 ϷϢᵽ QM1  QM2 ϵ QOut
        QM2 ϷϢҲһ
        QM3 ϷϢֻᵽ QM1 ϵ QOut

9. ű
        Database
        --------
                db2 "drop db DB1"
                db2 "drop db DB2"
                db2 "drop db DB3"
                db2 "create db DB1"
                db2 "create db DB2"
                db2 "create db DB3"

        Queue Manager & Message Broker
        ------------------------------
                dltmqm WBRKQM
                dltmqm QM1
                dltmqm QM2
                dltmqm QM3

                crtmqm WBRKQM
                crtmqm QM1
                crtmqm QM2
                crtmqm QM3

                strmqm WBRKQM
                strmqm QM1
                strmqm QM2
                strmqm QM3

                mqsicreateconfigmgr -i chenyux -a ch1shine -q WBRKQM
                mqsicreatebroker BK1 -i chenyux -a ch1shine -q QM1 -n DB1
                mqsicreatebroker BK2 -i chenyux -a ch1shine -q QM2 -n DB2
                mqsicreatebroker BK3 -i chenyux -a ch1shine -q QM3 -n DB3

                define qlocal ('QIn')           replace
                define qlocal ('QOut')          replace
                define qlocal ('QFail')         replace
                define qlocal ('QCatch')        replace

        WBRKQM (1414)
        -------------
                define listener (L) trptype (TCP) port (1414) control (QMGR)                            replace
                define qlocal (QM1) usage (XMITQ)                                                       replace
                define qlocal (QM2) usage (XMITQ)                                                       replace
                define qlocal (QM3) usage (XMITQ)                                                       replace
                define channel (WBRKQM.QM1) chltype (SDR) conname ('localhost(1221)') xmitq(QM1)        replace
                define channel (WBRKQM.QM2) chltype (SDR) conname ('localhost(1222)') xmitq(QM2)        replace
                define channel (WBRKQM.QM3) chltype (SDR) conname ('localhost(1223)') xmitq(QM3)        replace
                define channel (QM1.WBRKQM) chltype (RCVR)                                              replace
                define channel (QM2.WBRKQM) chltype (RCVR)                                              replace
                define channel (QM3.WBRKQM) chltype (RCVR)                                              replace

        QM1 (1221)
        ----------
                define listener (L) trptype (TCP) port (1221) control (QMGR)                            replace
                define qlocal (QM2) usage (XMITQ)                                                       replace
                define qlocal (QM3) usage (XMITQ)                                                       replace
                define channel (QM1.QM2) chltype (SDR) conname ('localhost(1222)') xmitq(QM2)           replace
                define channel (QM1.QM3) chltype (SDR) conname ('localhost(1223)') xmitq(QM3)           replace
                define channel (QM2.QM1) chltype (RCVR)                                                 replace
                define channel (QM3.QM1) chltype (RCVR)                                                 replace

                define qlocal (WBRKQM) usage (XMITQ)                                                    replace
                define channel (QM1.WBRKQM) chltype (SDR) conname ('localhost(1414)') xmitq(WBRKQM)     replace
                define channel (WBRKQM.QM1) chltype (RCVR)                                              replace

        QM2 (1222)
        ----------
                define listener (L) trptype (TCP) port (1222) control (QMGR)                            replace
                define qlocal (QM1) usage (XMITQ)                                                       replace
                define qlocal (QM3) usage (XMITQ)                                                       replace
                define channel (QM2.QM1) chltype (SDR) conname ('localhost(1221)') xmitq(QM1)           replace
                define channel (QM2.QM3) chltype (SDR) conname ('localhost(1223)') xmitq(QM3)           replace
                define channel (QM1.QM2) chltype (RCVR)                                                 replace
                define channel (QM3.QM2) chltype (RCVR)                                                 replace

                define qlocal (WBRKQM) usage (XMITQ)                                                    replace
                define channel (QM2.WBRKQM) chltype (SDR) conname ('localhost(1414)') xmitq(WBRKQM)     replace
                define channel (WBRKQM.QM2) chltype (RCVR)                                              replace

        QM3 (1223)
        ----------
                define listener (L) trptype (TCP) port (1223) control (QMGR)                            replace
                define qlocal (QM1) usage (XMITQ)                                                       replace
                define qlocal (QM2) usage (XMITQ)                                                       replace
                define channel (QM3.QM1) chltype (SDR) conname ('localhost(1221)') xmitq(QM1)           replace
                define channel (QM3.QM2) chltype (SDR) conname ('localhost(1222)') xmitq(QM2)           replace
                define channel (QM1.QM3) chltype (RCVR)                                                 replace
                define channel (QM2.QM3) chltype (RCVR)                                                 replace

                define qlocal (WBRKQM) usage (XMITQ)                                                    replace
                define channel (QM3.WBRKQM) chltype (SDR) conname ('localhost(1414)') xmitq(WBRKQM)     replace
                define channel (WBRKQM.QM3) chltype (RCVR)                                              replace

        Remove Clone
        ------------
                mqsichangeproperties BK1 -e EG1 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"\"
                mqsichangeproperties BK2 -e EG2 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"\"
                mqsichangeproperties BK3 -e EG3 -o DynamicSubscriptionEngine -n clonedPubSubBrokerList -v \"\"

        Start
        -----
            WBRKQM (1414)
            -------------
                start channel (WBRKQM.QM1)
                start channel (WBRKQM.QM2)
                start channel (WBRKQM.QM3)

            QM1 (1221)
            ----------
                start channel (QM1.WBRKQM)
                start channel (QM1.QM2)
                start channel (QM1.QM3)

            QM2 (1222)
            ----------
                start channel (QM2.WBRKQM)
                start channel (QM2.QM1)
                start channel (QM2.QM3)

            QM3 (1223)
            ----------
                start channel (QM3.WBRKQM)
                start channel (QM3.QM1)
                start channel (QM3.QM2)

        Stop
        ----
            WBRKQM (1414)
            -------------
                stop channel (WBRKQM.QM1)
                stop channel (WBRKQM.QM2)
                stop channel (WBRKQM.QM3)

            QM1 (1221)
            ----------
                stop channel (QM1.WBRKQM)
                stop channel (QM1.QM2)
                stop channel (QM1.QM3)

            QM2 (1222)
            ----------
                stop channel (QM2.WBRKQM)
                stop channel (QM2.QM1)
                stop channel (QM2.QM3)

            QM3 (1223)
            ----------
                stop channel (QM3.WBRKQM)
                stop channel (QM3.QM1)
                stop channel (QM3.QM2)










                                WMB Queue Pub/Sub RFH+RFH2 Lab
                                ==============================

1. WMQ  Pub/Sub ϢʽΪ RFH, WMB Ϊ RFH2 WMB Broker пԻá RFH Pub  RFH2 SubߵǿԵġٶϢ QIn תȥ Publication Node ("Subscription Point" = <SubPoint>)

2. RFH Sub
        rfhruil
                RFH     "RFH Type" = "Version 1""V1 Contents" = "PubSub"
                PubSub  "Request Type" = "Sub""Topic" = "myTopic""Queue Manager to Connect to" = <QMgr>
                        "Subscription Queue" = "QOut""Subscription Point" = <SubPoint>
                         Process Request 

         Toolkit  Subscription 
                $SYS/STREAM/<SubPoint>/myTopic  BK1     mqrfh:<QMgr>:QOut

3. RFH2 Pub
                RFH     "RFH Type" = "Version 2""V2 Folders" = "PubSub"
                PubSub  "Request Type" = "Publish""Topic" = "$SYS/STREAM/<SubPoint>/myTopic"
                        "Queue Manager to Connect to" = <QMgr>"Queue Name" = "QIn"
                         Process Request 

4. RFH2 Sub
                RFH     "RFH Type" = "Version 2""V2 Folders" = "PubSub"
                PubSub  "Request Type" = "Sub""Topic" = "myTopic""Queue Manager to Connect to" = <QMgr>
                        "Subscription Queue" = "QOut"
                         Process Request 

         Toolkit  Subscription 
                myTopic                         BK1     mqrfh2:<QMgr>:QOut

5. RFH Pub
        rfhruil
                RFH     "RFH Type" = "Version 1""V1 Contents" = "PubSub"
                PubSub  "Request Type" = "Publish""Topic" = "myTopic""Queue Manager to Connect to" = <QMgr>
                        "Queue Name" = "QIn"    //  Sub  <SubPoint> "Subscription Point" = <SubPoint>Ϣ Publication Node á "Subscription Point" ȱʡ
                         Process Request 

